package cn.tedu.api;
/*本类用于测试String类的使用*/
public class TestString {
    public static void main(String[] args) {
        char[] value={'a','b','c'};
        String s1=new String(value);//触发String(char[])的含参构造来创建对象
        String s11=new String(value);//触发String(char[])的含参构造来创建对象

        String s2="abc";
        String s22="abc";
        String s3="ccc";

        System.out.println(s1==s2);//false,一个在堆里,一个在常量池里
        System.out.println(s1==s11);//false,两个不同的对象,地址值不同
        System.out.println(s2==s22);//true,都在堆中常量池,并且由于内容相同,所以是一个地址值
        System.out.println(s2==s3);//false,都在堆中常量池,但是内容不同,所以指向两个地址值

        /*Object类中equals()的默认实现是通过==来比较的
        * 但是,Sring类已经重写了继承自Object中的equals()
        * 重写后,不再按照==比较,而是比较两个字符串的具体内容
        * 也就是说,不论创建方式,只有串的内容一致,equals()就会返回true*/
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s11));
        System.out.println(s2.equals(s3));

    }
}
